unit EmpresaController;

{$mode objfpc}{$H+}

interface

uses
  Classes, sqldb, SysUtils, EmpresaVO;

type
  TEmpresaController = class
  protected
  public
    class function PegaEmpresa(Id:Integer): TEmpresaVO;
    class function ConsultaIdEmpresa(Id: Integer): Boolean;
    class function GravaCargaEmpresa(vTupla: String): Boolean;

  end;

implementation

uses Udmprincipal, Biblioteca;

var
  ConsultaSQL: String;
  Query: TSQLQuery;

class function TEmpresaController.PegaEmpresa(Id:Integer): TEmpresaVO;

var
  Empresa: TEmpresaVO;
begin
  ConsultaSQL := 'select * from ECF_EMPRESA where ID=' + IntToStr(Id);

  Empresa := TEmpresaVO.Create;

  try
    try
      Query := TSQLQuery.Create(nil);
      Query.DataBase := dmPrincipal.IBCon;
      Query.sql.Text := ConsultaSQL;
      Query.Open;

      Empresa.Id                     := Query.FieldByName('ID').AsInteger;
      Empresa.IdEmpresa              := Query.FieldByName('ID_EMPRESA').AsInteger;
      Empresa.RazaoSocial            := Query.FieldByName('RAZAO_SOCIAL').AsString;
      Empresa.NomeFantasia           := Query.FieldByName('NOME_FANTASIA').AsString;
      Empresa.Cnpj                   := Query.FieldByName('CNPJ').AsString;
      Empresa.InscricaoEstadual      := Query.FieldByName('INSCRICAO_ESTADUAL').AsString;
      Empresa.InscricaoEstadualSt    := Query.FieldByName('INSCRICAO_ESTADUAL_ST').AsString;
      Empresa.InscricaoMunicipal     := Query.FieldByName('INSCRICAO_MUNICIPAL').AsString;
      Empresa.InscricaoJuntaComercial:= Query.FieldByName('INSCRICAO_JUNTA_COMERCIAL').AsString;
      Empresa.DataInscJuntaComercial := Query.FieldByName('DATA_INSC_JUNTA_COMERCIAL').AsString;
      Empresa.MatrizFilial           := Query.FieldByName('MATRIZ_FILIAL').AsString;
      Empresa.DataCadastro           := Query.FieldByName('DATA_CADASTRO').AsString;
      Empresa.DataInicioAtividades   := Query.FieldByName('DATA_INICIO_ATIVIDADES').AsString;
      Empresa.Suframa                := Query.FieldByName('SUFRAMA').AsString;
      Empresa.Email                  := Query.FieldByName('EMAIL').AsString;
      Empresa.ImagemLogotipo         := Query.FieldByName('IMAGEM_LOGOTIPO').AsString;
      Empresa.Crt                    := Query.FieldByName('CRT').AsString;
      Empresa.TipoRegime             := Query.FieldByName('TIPO_REGIME').AsString;
      Empresa.AliquotaPis            := Query.FieldByName('ALIQUOTA_PIS').AsFloat;
      Empresa.AliquotaCofins         := Query.FieldByName('ALIQUOTA_COFINS').AsFloat;
      Empresa.Logradouro             := Query.FieldByName('LOGRADOURO').AsString;
      Empresa.Numero                 := Query.FieldByName('NUMERO').AsString;
      Empresa.Complemento            := Query.FieldByName('COMPLEMENTO').AsString;
      Empresa.Cep                    := Query.FieldByName('CEP').AsString;
      Empresa.Bairro                 := Query.FieldByName('BAIRRO').AsString;
      Empresa.Cidade                 := Query.FieldByName('CIDADE').AsString;
      Empresa.Uf                     := Query.FieldByName('UF').AsString;
      Empresa.Fone                   := Query.FieldByName('FONE').AsString;
      Empresa.Fax                    := Query.FieldByName('FAX').AsString;
      Empresa.Contato                := Query.FieldByName('CONTATO').AsString;
      Empresa.CodigoIbgeCidade       := Query.FieldByName('CODIGO_IBGE_CIDADE').AsInteger;
      Empresa.CodigoIbgeUf           := Query.FieldByName('CODIGO_IBGE_UF').AsInteger;

      result := Empresa;
    except
      result := nil;
    end;
  finally
    Query.Free;
  end;
end;

class function TEmpresaController.ConsultaIdEmpresa(Id: Integer): Boolean;
begin
  ConsultaSQL := 'select ID from ECF_EMPRESA where (ID = :pID) ';
  try
    try
      Query := TSQLQuery.Create(nil);
      Query.DataBase := dmPrincipal.IBCon;
      Query.sql.Text := ConsultaSQL;
      Query.ParamByName('pID').AsInteger:=Id;
      Query.Open;
      if not Query.IsEmpty then
        result := true
      else
        result := false;
    except
    end;

  finally
    Query.Free;
  end;

end;

class function TEmpresaController.GravaCargaEmpresa(vTupla: String): Boolean;
var
  ID: integer;
begin
  try
    try
      if dmprincipal.BancoPAF = 'FIREBIRD' then
      begin
        ConsultaSQL := 'UPDATE OR INSERT INTO ECF_EMPRESA ' +
        ' (ID, '+
        'RAZAO_SOCIAL, '+
        'NOME_FANTASIA, '+
        'CNPJ, '+
        'INSCRICAO_ESTADUAL, '+
        'INSCRICAO_ESTADUAL_ST, '+
        'INSCRICAO_MUNICIPAL, '+
        'INSCRICAO_JUNTA_COMERCIAL, '+
        'DATA_INSC_JUNTA_COMERCIAL, '+
        'MATRIZ_FILIAL, '+
        'DATA_CADASTRO, '+
        'DATA_INICIO_ATIVIDADES, '+
        'SUFRAMA, '+
        'EMAIL, '+
        'IMAGEM_LOGOTIPO, '+
        'CRT, '+
        'TIPO_REGIME, '+
        'ALIQUOTA_PIS, '+
        'ALIQUOTA_COFINS, '+
        'LOGRADOURO, '+
        'NUMERO, '+
        'COMPLEMENTO, '+
        'CEP, '+
        'BAIRRO, '+
        'CIDADE, '+
        'UF, '+
        'FONE, '+
        'FAX, '+
        'CONTATO, '+
        'CODIGO_IBGE_CIDADE, '+
        'CODIGO_IBGE_UF, '+
        'ID_EMPRESA) '+

        ' values ('+

        DevolveConteudoDelimitado('|',vTupla)+','+  //   ID                         INTEGER NOT NULL,
        DevolveConteudoDelimitado('|',vTupla)+','+  //   RAZAO_SOCIAL               VARCHAR(150),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   NOME_FANTASIA              VARCHAR(150),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   CNPJ                       VARCHAR(14),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   INSCRICAO_ESTADUAL         VARCHAR(30),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   INSCRICAO_ESTADUAL_ST      VARCHAR(30),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   INSCRICAO_MUNICIPAL        VARCHAR(30),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   INSCRICAO_JUNTA_COMERCIAL  VARCHAR(30),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   DATA_INSC_JUNTA_COMERCIAL  DATE,
        DevolveConteudoDelimitado('|',vTupla)+','+  //   MATRIZ_FILIAL              CHAR(1),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   DATA_CADASTRO              DATE,
        DevolveConteudoDelimitado('|',vTupla)+','+  //   DATA_INICIO_ATIVIDADES     DATE,
        DevolveConteudoDelimitado('|',vTupla)+','+  //   SUFRAMA                    VARCHAR(9),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   EMAIL                      VARCHAR(250),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   IMAGEM_LOGOTIPO            VARCHAR(250),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   CRT                        CHAR(1),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   TIPO_REGIME                CHAR(1),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   ALIQUOTA_PIS               DECIMAL(18,6),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   ALIQUOTA_COFINS            DECIMAL(18,6),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   LOGRADOURO                 VARCHAR(250),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   NUMERO                     VARCHAR(6),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   COMPLEMENTO                VARCHAR(100),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   CEP                        VARCHAR(8),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   BAIRRO                     VARCHAR(100),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   CIDADE                     VARCHAR(100),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   UF                         CHAR(2),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   FONE                       VARCHAR(10),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   FAX                        VARCHAR(10),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   CONTATO                    VARCHAR(30),
        DevolveConteudoDelimitado('|',vTupla)+','+  //   CODIGO_IBGE_CIDADE         INTEGER,
        DevolveConteudoDelimitado('|',vTupla)+','+  //   CODIGO_IBGE_UF             INTEGER,
        DevolveConteudoDelimitado('|',vTupla)+')';  //   ID_EMPRESA                 INTEGER
      end
      else if dmprincipal.BancoPAF = 'MYSQL' then
      begin
        ID := StrToInt(DevolveConteudoDelimitado('|',vTupla));            //    ID              INTEGER NOT NULL,

        if not ConsultaIdEmpresa(ID) then
          ConsultaSQL :=  'UPDATE  ECF_EMPRESA set '+
        'RAZAO_SOCIAL ='+                       DevolveConteudoDelimitado('|',vTupla)+','+  //   RAZAO_SOCIAL               VARCHAR(150),
        'NOME_FANTASIA ='+                      DevolveConteudoDelimitado('|',vTupla)+','+  //   NOME_FANTASIA              VARCHAR(150),
        'CNPJ ='+                               DevolveConteudoDelimitado('|',vTupla)+','+  //   CNPJ                       VARCHAR(14),
        'INSCRICAO_ESTADUAL ='+                 DevolveConteudoDelimitado('|',vTupla)+','+  //   INSCRICAO_ESTADUAL         VARCHAR(30),
        'INSCRICAO_ESTADUAL_ST ='+              DevolveConteudoDelimitado('|',vTupla)+','+  //   INSCRICAO_ESTADUAL_ST      VARCHAR(30),
        'INSCRICAO_MUNICIPAL ='+                DevolveConteudoDelimitado('|',vTupla)+','+  //   INSCRICAO_MUNICIPAL        VARCHAR(30),
        'INSCRICAO_JUNTA_COMERCIAL ='+          DevolveConteudoDelimitado('|',vTupla)+','+  //   INSCRICAO_JUNTA_COMERCIAL  VARCHAR(30),
        'DATA_INSC_JUNTA_COMERCIAL ='+          DevolveConteudoDelimitado('|',vTupla)+','+  //   DATA_INSC_JUNTA_COMERCIAL  DATE,
        'MATRIZ_FILIAL ='+                      DevolveConteudoDelimitado('|',vTupla)+','+  //   MATRIZ_FILIAL              CHAR(1),
        'DATA_CADASTRO ='+                      DevolveConteudoDelimitado('|',vTupla)+','+  //   DATA_CADASTRO              DATE,
        'DATA_INICIO_ATIVIDADES ='+             DevolveConteudoDelimitado('|',vTupla)+','+  //   DATA_INICIO_ATIVIDADES     DATE,
        'SUFRAMA ='+                            DevolveConteudoDelimitado('|',vTupla)+','+  //   SUFRAMA                    VARCHAR(9),
        'EMAIL ='+                              DevolveConteudoDelimitado('|',vTupla)+','+  //   EMAIL                      VARCHAR(250),
        'IMAGEM_LOGOTIPO ='+                    DevolveConteudoDelimitado('|',vTupla)+','+  //   IMAGEM_LOGOTIPO            VARCHAR(250),
        'CRT ='+                                DevolveConteudoDelimitado('|',vTupla)+','+  //   CRT                        CHAR(1),
        'TIPO_REGIME ='+                        DevolveConteudoDelimitado('|',vTupla)+','+  //   TIPO_REGIME                CHAR(1),
        'ALIQUOTA_PIS ='+                       DevolveConteudoDelimitado('|',vTupla)+','+  //   ALIQUOTA_PIS               DECIMAL(18,6),
        'ALIQUOTA_COFINS ='+                    DevolveConteudoDelimitado('|',vTupla)+','+  //   ALIQUOTA_COFINS            DECIMAL(18,6),
        'LOGRADOURO ='+                         DevolveConteudoDelimitado('|',vTupla)+','+  //   LOGRADOURO                 VARCHAR(250),
        'NUMERO ='+                             DevolveConteudoDelimitado('|',vTupla)+','+  //   NUMERO                     VARCHAR(6),
        'COMPLEMENTO ='+                        DevolveConteudoDelimitado('|',vTupla)+','+  //   COMPLEMENTO                VARCHAR(100),
        'CEP ='+                                DevolveConteudoDelimitado('|',vTupla)+','+  //   CEP                        VARCHAR(8),
        'BAIRRO ='+                             DevolveConteudoDelimitado('|',vTupla)+','+  //   BAIRRO                     VARCHAR(100),
        'CIDADE ='+                             DevolveConteudoDelimitado('|',vTupla)+','+  //   CIDADE                     VARCHAR(100),
        'UF ='+                                 DevolveConteudoDelimitado('|',vTupla)+','+  //   UF                         CHAR(2),
        'FONE ='+                               DevolveConteudoDelimitado('|',vTupla)+','+  //   FONE                       VARCHAR(10),
        'FAX ='+                                DevolveConteudoDelimitado('|',vTupla)+','+  //   FAX                        VARCHAR(10),
        'CONTATO ='+                            DevolveConteudoDelimitado('|',vTupla)+','+  //   CONTATO                    VARCHAR(30),
        'CODIGO_IBGE_CIDADE ='+                 DevolveConteudoDelimitado('|',vTupla)+','+  //   CODIGO_IBGE_CIDADE         INTEGER,
        'CODIGO_IBGE_UF ='+                     DevolveConteudoDelimitado('|',vTupla)+','+  //   CODIGO_IBGE_UF             INTEGER,
        'ID_EMPRESA ='+                         DevolveConteudoDelimitado('|',vTupla)+')'+  //   ID_EMPRESA                 INTEGER
        ' where ID ='+IntToStr(ID);
      end;

      Query := TSQLQuery.Create(nil);
      Query.DataBase := dmPrincipal.IBCon;
      Query.sql.Text := ConsultaSQL;
      Query.ExecSQL();

      result := True;
    except
      result := false;
    end;
  finally
    Query.Free;
  end;
end;

end.
